
/*
 * @Author: sparkstudiosju 419785598@qq.com
 * @Date: 2025-08-28 23:38:43
 * @LastEditors: sparkstudiosju 419785598@qq.com
 * @LastEditTime: 2025-08-29 01:38:30
 * @FilePath: /SJUDEMO_HAL/include/led.h
 * @Description: 
 * 
 * Copyright (c) 2025 by ${git_name_email}, All Rights Reserved. 
 */
#ifndef LED_H
#define LED_H

#include "stm32f1xx_hal.h"

// ==================== LED硬件配置 ====================
// LED端口和引脚宏定义
#define LED1_GPIO_PORT GPIOC
#define LED1_PIN GPIO_PIN_15
#define LED2_GPIO_PORT GPIOC
#define LED2_PIN GPIO_PIN_14
#define LED3_GPIO_PORT GPIOC
#define LED3_PIN GPIO_PIN_13
#define LED4_GPIO_PORT GPIOB
#define LED4_PIN GPIO_PIN_6

// ==================== LED驱动方式配置 ====================
// LED驱动方式宏定义（高电平点亮为1，低电平点亮为0）
#define LED1_DRIVE_MODE  1    // LED1: 高电平点亮
#define LED2_DRIVE_MODE  1    // LED2: 高电平点亮
#define LED3_DRIVE_MODE  0    // LED3: 低电平点亮
#define LED4_DRIVE_MODE  0    // LED4: 低电平点亮

// ==================== LED控制宏定义 ====================
// 简洁的LED控制宏 - 自动处理驱动方式差异
#define LED1_ON()  HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN, \
                (LED1_DRIVE_MODE ? GPIO_PIN_SET : GPIO_PIN_RESET))
#define LED1_OFF() HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN, \
                (LED1_DRIVE_MODE ? GPIO_PIN_RESET : GPIO_PIN_SET))

#define LED2_ON()  HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2_PIN, \
                (LED2_DRIVE_MODE ? GPIO_PIN_SET : GPIO_PIN_RESET))
#define LED2_OFF() HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2_PIN, \
                (LED2_DRIVE_MODE ? GPIO_PIN_RESET : GPIO_PIN_SET))

#define LED3_ON()  HAL_GPIO_WritePin(LED3_GPIO_PORT, LED3_PIN, \
                (LED3_DRIVE_MODE ? GPIO_PIN_SET : GPIO_PIN_RESET))
#define LED3_OFF() HAL_GPIO_WritePin(LED3_GPIO_PORT, LED3_PIN, \
                (LED3_DRIVE_MODE ? GPIO_PIN_RESET : GPIO_PIN_SET))

#define LED4_ON()  HAL_GPIO_WritePin(LED4_GPIO_PORT, LED4_PIN, \
                (LED4_DRIVE_MODE ? GPIO_PIN_SET : GPIO_PIN_RESET))
#define LED4_OFF() HAL_GPIO_WritePin(LED4_GPIO_PORT, LED4_PIN, \
                (LED4_DRIVE_MODE ? GPIO_PIN_RESET : GPIO_PIN_SET))

// ==================== 便捷函数 ====================
// 保留一些有用的便捷函数，但不强制使用
void LED_Init(void);
void LED_Control(int led_num, int state);  // 批量控制时使用

#endif // LED_H
